package edu.ustb.efws.pipeline.mapper;

import edu.ustb.efws.pipeline.domain.RiskLog;
import org.apache.ibatis.annotations.*;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 危险级别日志数据操作
 *
 * @author TS Group
 */
@Mapper
public interface RiskLogMapper {

    int insertBatch(Map<String, Object> params);

    /**
     * 创建新日志表
     *
     * @param positionId 采集点编号
     */
    void createTable(@Param("positionId")int positionId);

    /**
     * 创建分区
     *
     * @param positionId 检查点编号
     * @param month 月份
     * @param partition 分区名称
     */
    void createPartition(@Param("positionId")int positionId, @Param("month") int month, @Param("partition")String partition);

    /**
     * 删除分区
     *
     * @param positionId 检查点编号
     * @param partition 分区
     */
    void dropPartition(@Param("positionId")int positionId, @Param("partition")String partition);

    /**
     * 查询最后风险值
     *
     * @param positionId 检查点编号
     */
    RiskLog findLast(@Param("positionId")int positionId);

    /**
     * 记录数
     *
     * @param positionId 检查点编号
     * @param month 月份
     * @param from 开始日期
     * @param to 结束日期
     * @return 记录数
     */
    Long count(@Param("positionId")int positionId, @Param("month")int month, @Param("from") Date from, @Param("to") Date to);

    /**
     * 查询
     *
     * @param positionId 检查点编号
     * @param month 月份
     * @param from 开始日期
     * @param to 结束日期
     * @return 记录
     */
    List<RiskLog> find(@Param("positionId")int positionId, @Param("month")int month,
                       @Param("from") Date from, @Param("to") Date to, @Param("offset")int offset,
                       @Param("limit")int limit);
}
